home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / strategy / xpuzzles.3 / xpuzzles / xpuzzles-5.3.1 / xdino / DinoP.h < prev    next >
C/C++ Source or Header  |  1996-04-02  |  4KB  |  172 lines

  1. /*
  2. # X-BASED DINOSAUR CUBE
  3. #
  4. #  DinoP.h
  5. #
  6. ###
  7. #
  8. #  Copyright (c) 1995 - 96    David Albert Bagley, bagleyd@hertz.njit.edu
  9. #
  10. #                   All Rights Reserved
  11. #
  12. #  Permission to use, copy, modify, and distribute this software and
  13. #  its documentation for any purpose and without fee is hereby granted,
  14. #  provided that the above copyright notice appear in all copies and
  15. #  that both that copyright notice and this permission notice appear in
  16. #  supporting documentation, and that the name of the author not be
  17. #  used in advertising or publicity pertaining to distribution of the
  18. #  software without specific, written prior permission.
  19. #
  20. #  This program is distributed in the hope that it will be "playable",
  21. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  22. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23. #
  24. */
  25.  
  26. /* Private header file for Dino */
  27.  
  28. #ifndef _DinoP_h
  29. #define _DinoP_h
  30.  
  31. #include "Dino.h"
  32.  
  33. /*** random number generator ***/
  34. /* insert your favorite */
  35. extern void SetRNG();
  36. extern long LongRNG();
  37. #define SRAND(X) SetRNG((long) X)
  38. #define LRAND() LongRNG()
  39.  
  40. #define NRAND(X) ((int)(LRAND()%(X)))
  41.  
  42. #define SYMBOL ':'
  43.  
  44. #define IGNORE (-1)
  45. #define TR 0
  46. #define BR 1
  47. #define BL 2
  48. #define TL 3
  49. #define STRT 4
  50. #define CW 5
  51. #define HALF 6
  52. #define CCW 7
  53. #define TOP 8
  54. #define RIGHT 9
  55. #define BOTTOM 10
  56. #define LEFT 11
  57. #define MAXORIENT 4
  58. #define MAXROTATE 3
  59. #define CORNER 0
  60. #define MIDDLE 1
  61. #define EDGE 2
  62. #define FACE 3
  63.  
  64. /* The following are in xdino.c also */
  65. #define PERIOD2 2
  66. #define PERIOD3 3
  67. #define BOTH 4
  68. #define MAXMODES 3
  69. #define MAXFACES 6
  70.  
  71. #define DEFAULTMODE PERIOD3
  72.  
  73. #define MIN(a,b) (((int)(a)<(int)(b))?(int)(a):(int)(b))
  74. #define MAX(a,b) (((int)(a)>(int)(b))?(int)(a):(int)(b))
  75.  
  76. typedef struct _DinoLoc
  77. {
  78.   int face, side, dir;
  79. } DinoLoc;
  80.  
  81. typedef struct _DinoCornerLoc
  82. {
  83.   int face, rotation;
  84. } DinoCornerLoc;
  85.  
  86. typedef struct _DinoPart
  87. {
  88.   Pixel foreground;
  89.   Pixel borderColor;
  90.   Pixel faceColor[MAXFACES];
  91.   DinoCornerLoc cubeLoc[MAXFACES][MAXORIENT];
  92.   DinoCornerLoc faceLoc[MAXORIENT];
  93.   DinoCornerLoc rowLoc[MAXORIENT][MAXORIENT];
  94.   DinoCornerLoc spindleLoc[MAXROTATE][2];
  95.   int currentFace, currentPosition, currentDirection;
  96.   Boolean started, practice, orient, vertical, mono;
  97.   int dim; /* This allows us to reuse code between 2d and 3d */
  98.   int mode, depth, style;
  99.   Position delta;
  100.   Position orientLineLength;
  101.   XPoint puzzleSize;
  102.   XPoint puzzleOffset, letterOffset;
  103.   GC puzzleGC;
  104.   GC borderGC;
  105.   GC faceGC[MAXFACES];
  106.   GC inverseGC;
  107.   String faceName[MAXFACES];
  108.   XtCallbackList select;
  109. } DinoPart;
  110.  
  111. typedef struct _DinoRec
  112. {
  113.   CorePart core;
  114.   DinoPart dino;
  115. } DinoRec;
  116.  
  117. /* This gets around C's inability to do inheritance */
  118. typedef struct _DinoClassPart
  119. {
  120.   int ignore;
  121. } DinoClassPart;
  122.  
  123. typedef struct _DinoClassRec
  124. {
  125.   CoreClassPart core_class;
  126.   DinoClassPart dino_class;
  127. } DinoClassRec;
  128.  
  129. typedef struct _RowNext
  130. {
  131.   int face, direction, side_face;
  132. } RowNext;
  133.  
  134. extern DinoClassRec dinoClassRec;
  135.  
  136. extern void QuitDino();
  137. extern void PracticeDino();
  138. extern void PracticeDinoMaybe();
  139. extern void RandomizeDino();
  140. extern void RandomizeDinoMaybe();
  141. extern void GetDino();
  142. extern void WriteDino();
  143. extern void UndoDino();
  144. extern void SolveDino();
  145. extern void OrientizeDino();
  146. extern void Period2ModeDino();
  147. extern void Period3ModeDino();
  148. extern void BothModeDino();
  149. extern void MoveDinoInput();
  150. extern void MoveDino();
  151. extern void SelectDino();
  152. extern void ReleaseDino();
  153. extern void DrawAllPolyhedrons();
  154. extern Boolean CheckSolved();
  155. extern void InitMoves();
  156. extern void PutMove();
  157. extern void GetMove();
  158. extern int MadeMoves();
  159. extern void FlushMoves();
  160. extern int NumMoves();
  161. extern void ScanMoves();
  162. extern void PrintMoves();
  163. extern void ScanStartPosition();
  164. extern void PrintStartPosition();
  165. extern void SetStartPosition();
  166.  
  167. #ifdef DEBUG
  168. extern void PrintCube();
  169. #endif
  170.  
  171. #endif /* _DinoP_h */
  172.